package com.yangye.cloud.mybatis.core.service;


import com.yangye.cloud.mybatis.core.page.PageRequest;
import com.yangye.cloud.mybatis.core.page.PageResult;

import java.util.List;

/**
 * 通用service
 *
 * @author yangye
 * @date 2019/3/29 0029
 */
public interface BaseService<E> {

	/**
	 * id查询
	 *
	 * @param id
	 * @return
	 */
	E get(Long id);

	/**
	 * 对象方式查询
	 *
	 * @param entity
	 * @return
	 */
	E get(E entity);

	/**
	 * 查询全部
	 *
	 * @param entity
	 * @return
	 */
	List<E> findAll(E entity);

	/**
	 * 分页查询
	 *
	 * @param entity
	 * @return
	 */
	PageResult<E> findPage(E entity, PageRequest pageRequest);

	/**
	 * 新增
	 *
	 * @param entity
	 * @return
	 */
	E add(E entity);

	/**
	 * 批量保存
	 *
	 * @param list
	 * @return
	 */
	int batchAdd(List<E> list);

	/**
	 * 更新
	 *
	 * @param entity
	 * @return
	 */
	E update(E entity);

	/**
	 * 删除
	 *
	 * @param entity
	 */
	void remove(E entity);

	/**
	 * 根据id删除
	 *
	 * @param id
	 */
	void remove(Long id);
}
